#!/usr/bin/env python3
# _*_ coding:utf-8 _*_

from flask import Flask
from flask import render_template
from flask_restful import Api, Resource, reqparse
import os

app = Flask(__name__)

# 实例化一个Api对象
api = Api(app)

# 所有参数的统一入口，它会识别和判断传过来的参数是否正确
parser = reqparse.RequestParser()
# 接收别人对api发起post请求时，传过来的值
parser.add_argument('taycc', type=str)
# 如果传过来的参数错误，会返回给用户一个我定义好的信息，help属于可选参数
parser.add_argument('tianye', type=str, help="如果指定了help参数的值，在解析的时候当类型错误被触发的时候，它将会被作为错误信息给呈现出来。")
# webhook穿过的来的值中，名为passwork的key中包含着我自己设置的密码
parser.add_argument('password', type=str)


# 声明一个类继承flask_restful的Resource
class Git(Resource):
    # 处理get请求
    def get(self):
        return 'https://tianye.wiki/'

        # 处理post请求

    def post(self):
        # 这里得到的是一个字典，里面包含了不同的键值对
        args = parser.parse_args()
        # 从args字典中，根据不同的key拿到对应的value
        git_args = args['password']
        # 判断参数是否为空
        if git_args:
            # 判断密码是否正确
            if git_args == "yongjiecaijuesi123":
                # 如果密码正确就执行如下命令
                try:
                    # 在linux终端中执行以下命令.......
                    # 执行git命令时(一定要提前做好ssh免密的操作)
                    # git clone git@gitee.com:tay3223/MyDocsify.git ~/MyDocsify
                    os.popen("cd /root/MyDocsify    &&    git pull")
                    # 执行成功是，给webhook返回一个字符串
                    return "Execute successfully!"
                except:
                    # 执行失败时，返回一个异常
                    return "Execute failure!"
            else:
                # 判断密码是否正确
                return "Password mistake!"
        else:
            # 判断请求中携带的参数是否为空
            return "The password cannot be empty!"


# 添加一个url规则
api.add_resource(Git, '/git')

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5000)
